package org.wu.framework.authorization.platform.application;

import org.wu.framework.web.response.Result;
import org.wu.framework.web.response.ResultFactory;
import org.wu.framework.authorization.platform.domain.model.sys.zone.user.SysZoneUser;
import org.wu.framework.authorization.platform.application.command.sys.zone.user.SysZoneUserRemoveCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.user.SysZoneUserStoryCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.user.SysZoneUserUpdateCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.user.SysZoneUserQueryListCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.user.SysZoneUserQueryOneCommand;
import org.wu.framework.authorization.platform.application.dto.SysZoneUserDTO;
import java.util.List;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;
import org.wu.framework.authorization.platform.application.command.sys.zone.user.SysZoneUserExcelExport;
import org.wu.framework.authorization.platform.application.command.sys.zone.user.SysZoneUserExcelImport;
/**
 * describe 用户区域关联关系 
 *
 * @author Jia wei Wu
 * @date 2025/07/27 05:25 下午
 * @see org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyApplication 
 **/

public interface SysZoneUserApplication {


    /**
     * describe 新增用户区域关联关系
     *
     * @param sysZoneUserStoryCommand 新增用户区域关联关系     
     * @return {@link Result<SysZoneUser>} 用户区域关联关系新增后领域对象     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    Result<SysZoneUser> story(SysZoneUserStoryCommand sysZoneUserStoryCommand);

    /**
     * describe 批量新增用户区域关联关系
     *
     * @param sysZoneUserStoryCommandList 批量新增用户区域关联关系     
     * @return {@link Result<List<SysZoneUser>>} 用户区域关联关系新增后领域对象集合     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    Result<List<SysZoneUser>> batchStory(List<SysZoneUserStoryCommand> sysZoneUserStoryCommandList);

    /**
     * describe 更新用户区域关联关系
     *
     * @param sysZoneUserUpdateCommand 更新用户区域关联关系     
     * @return {@link Result<SysZoneUser>} 用户区域关联关系领域对象     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    Result<SysZoneUser> updateOne(SysZoneUserUpdateCommand sysZoneUserUpdateCommand);

    /**
     * describe 查询单个用户区域关联关系
     *
     * @param sysZoneUserQueryOneCommand 查询单个用户区域关联关系     
     * @return {@link Result<SysZoneUserDTO>} 用户区域关联关系DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    Result<SysZoneUserDTO> findOne(SysZoneUserQueryOneCommand sysZoneUserQueryOneCommand);

    /**
     * describe 查询多个用户区域关联关系
     *
     * @param sysZoneUserQueryListCommand 查询多个用户区域关联关系     
     * @return {@link Result <List<SysZoneUserDTO>>} 用户区域关联关系DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    Result <List<SysZoneUserDTO>> findList(SysZoneUserQueryListCommand sysZoneUserQueryListCommand);

    /**
     * describe 分页查询多个用户区域关联关系
     *
     * @param sysZoneUserQueryListCommand 分页查询多个用户区域关联关系     
     * @return {@link Result <LazyPage<SysZoneUserDTO>>} 分页用户区域关联关系DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    Result <LazyPage<SysZoneUserDTO>> findPage(int size,int current,SysZoneUserQueryListCommand sysZoneUserQueryListCommand);

    /**
     * describe 删除用户区域关联关系
     *
     * @param sysZoneUserRemoveCommand 删除用户区域关联关系     
     * @return {@link Result<SysZoneUser>} 用户区域关联关系     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    Result<SysZoneUser> remove(SysZoneUserRemoveCommand sysZoneUserRemoveCommand);

    /**
     * describe 导出用户区域关联关系
     *
     * @param sysZoneUserQueryListCommand 导出用户区域关联关系     
     * @return {@link List<SysZoneUserExcelExport>} 用户区域关联关系     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    public List<SysZoneUserExcelExport> exportExcel(SysZoneUserQueryListCommand sysZoneUserQueryListCommand);

    /**
     * describe 导入用户区域关联关系
     *
     * @param sysZoneUserExcelImportList 导入用户区域关联关系     
     * @return {@link Result<List<SysZoneUserExcelImport>>} 用户区域关联关系     
     
     * @author Jia wei Wu
     * @date 2025/07/27 05:25 下午
     **/

    public Result<List<SysZoneUserExcelImport>> importExcel(List<SysZoneUserExcelImport> sysZoneUserExcelImportList);

}